如何把飲食習慣這種零散的內容,拆解成可使用的資料?
還記得最前面說到專案的特色嗎? 希望可以盡可能貼近使用者需求,但飲食這件事非常個人化,例如早餐習慣吃什麼、口味偏好、有沒有忌口,這些都是生活的一部分,只靠計算是設計不出來的,還得先了解使用者的需求、生活、習慣。
問題是,這部分的知識是零散的,跟前面那些可以用公式邏輯化的計算性質不同,該如何透過技術來達成呢? 好在這正是 AI 相對擅長的地方。比起精確計算,AI 更擅長理解情境與語意、做歸納統整。此次專案正好可以善用 AI 的這個特性,幫助我們更了解使用者,進而設計出更人性化的飲食建議。
由於實作的細節會在後面的篇章分享,因此這邊先分享概要
有些飲食敘述的範圍很小,能夠馬上做判斷,例如飲食禁忌、外食頻率等等,這類問題直接讓使用者勾選/小範圍的輸入框,會比較簡單,也比較不容易出錯,如果改成讓每個人自己打字描述,AI還要再去判斷他真正的意思,反而徒增不必要的麻煩。
但像「早餐幾乎都在超商買」、「常常晚上十一點吃消夜」這種敘述情境,就很難全部做成選項,因為每個人的生活習慣不同,敘述的情境範圍也很大,不可能把所有的項目都列出來。因此像這種比較細、生活化的資訊,就適合讓使用者直接用文字描述,再交給 AI 去理解。
簡單來說,兩種輸入方式各自負責不同的事情:
決定哪些資訊要讓使用者自由輸入之後,下一個問題就是 : AI 看完這段自由文字之後,要整理成什麼格式,才有利後續設計菜單?
我的做法是把它整理成一個叫 DietaryAnalysis 的資料結構,裡面分成四類:
mealPattern:主要跟餐次有關,例如記錄一天大概吃幾餐、會不會不吃早餐、有沒有吃消夜,以及平常大概幾點吃飯recallObservations:AI 幫忙整理出的重點觀察,例如「早餐通常在超商解決」eatingOutPattern:描述平常外食的習慣,例如常吃便當、超商,還是外送。外食比例雖然已經用”勾選”的方式拿到大方向,但哪一餐外食、吃什麼類型,只有自述才看得出來,所以還是有讓 AI 針對這部份去做處理。preferences:記錄飲食偏好,例如會不會喝含糖飲料、吃不吃辣、口味重不重,以及喜歡或不喜歡哪些食物也就是說,使用者原本輸入的可能是一大段很生活化的描述,AI 的工作就是把這些零散資訊整理成固定的欄位,讓後面的系統比較好使用。至於為什麼是決定這四種類別呢? 主要跟營養師在判斷飲食時會觀察的點有關,不過這裡並沒有在計算營養,而是讓AI看懂「使用者平常的飲食習慣」。